define(function() {
	var ec = require('echarts');
	require('echarts/chart/line');
	require('echarts/chart/bar');
	var zrUtil = require('zrender/tool/util');
	var zrnumber = require('echarts/util/number');


	var option_day = {
		title: {
			x: 60,
			textStyle:{
				// fontWeight: 'bolder',
				color: '#999999'
			}	
		},
		tooltip: {
			trigger: 'axis',
			formatter: function(param) {
				var result = param[0][1] + '点<br/>';
				result += param[0][0] + ' : ' + zrnumber.addCommas(param[0][2]) ;
				// if (param[0].data && param[0].dataIndex - 1 >= 0) {
				// 	var lasthour = param[0].series.data[param[0].dataIndex - 1];
				// 	var s = (((param[0].data / lasthour) - 1) * 100).toFixed(2);
				// 	result += '日环比 : ';
				// 	if (s > 0) {
				// 		result += '<span style="color: orangered">' + s + '%&#8593</span>';
				// 	} else {
				// 		result += '<span style="color: greenyellow">' + s + '%&#8595</span>';
				// 	}
				// 	result += '<br/>';
				// }
				// if (param[0].data && param[1].data) {
				// 	var s2 = (((param[0].data / param[1].data) - 1) * 100).toFixed(2);
				// 	result += '<br/>日同比 : ';
				// 	if (s2 > 0) {
				// 		result += '<span style="color: orangered">' + s2 + '%&#8593</span>';
				// 	} else {
				// 		result += '<span style="color: greenyellow">' + s2 + '%&#8595</span>';
				// 	}
				// }
				if(param.length >1){
					for(var i=1;i<param.length;i++){
						result += '<br/>' + param[i].seriesName + ' : ' + zrnumber.addCommas(param[i].data);
					}
				}
				return result;
			}
		},
		calculable: true,
		xAxis: [{
			type: 'category',
            axisLabel : {
            	interval: 11,
            	formatter: function(value){
            		return value.substr(0,2);
            	}
            },
            data: function() {
                var x = [];
                for (var i = 0; i < 24; i++) {
                	for (var j =0; j < 60; j+=5){
                		if(i==0 && j==0){
                			continue;
                		}
                		var hour = i < 10 ? '0'+i.toString() : i.toString();
                		var min = j <10 ? '0'+j.toString() : j.toString();
                		x.push(hour+':'+min);
                	}
                }
                x.push('24:00');
                return x;
            }()
		}],
		yAxis: [{
			type: 'value'
		}],		
		grid: {
			x: 70,
			y: 30,
			y2: 50,
			x2: 5
		},		
		legend: {
			data: [],
	        x: 'center',
	        y: 'bottom',
	        // padding: [0,20,0,0],
	        textStyle: {
	        	color: '#818181'
	        }			
		},
		series: [{
			name: '今日数据',
			type: 'line',
            smooth: true,
            symbol:'none',			
			data: []
		}]
	};

	function RTChartDay(id,index_type) {
		this.id = id;
		this.index_type = index_type;
		this.lasttime = 0;
		this.option = zrUtil.clone(option_day);
		this.lineNum = 0;
		this.myChart = ec.init(document.getElementById(id));
		this.option.title.text = title[this.index_type];
	}

	// RTChartDay.prototype.addLine = function(stat_date) {
	// 	var self = this;
	// 	this.option.legend.data.push(stat_date);
	// 	var formData ={
	// 			"index_type": self.index_type,
	// 			"page_type": $('#page_type').val(),
	// 			"bussline": $('#bussline').val(),
	// 			"platform":$('#platform').val(),
	// 			"identity": $('#identity').val(),
	// 			"stat_date" : stat_date
	// 	};
	// 	$.ajax({
	// 		url: '/dashboard/realtime/netflow_ab_test/getDayData',
	// 		type: 'POST',
	// 		async: true,
	// 		data: formData,
	// 		dataType: 'json',
	// 		success: function(data) {
	// 			var opt = {
	// 				name: stat_date,
	// 				type: 'line',
	// 	            smooth: true,
	// 	            symbol:'none',
	// 				data: data.data
	// 			}
	// 			self.option.series.push(opt);
	// 			self.myChart.setOption(self.option, true);
	// 		}
	// 	});
	// }

	var legend = [];
	RTChartDay.prototype.init = function(addDate) {
		var self = this;
		var lineIndex = self.lineNum++;
		var stat_date = addDate ? addDate : $('#stat_date').val();
		var formData ={
				"index_type": self.index_type,
				"page_type": $('#page_type').val(),
				"bussline": $('#bussline').val(),
				"platform":$('#platform').val(),
				"identity": $('#identity').val(),
				"stat_date" : stat_date
			};
		self.myChart.showLoading({
			text: '正在努力的读取数据中...'
		});
		var name = formData.identity + '_' + stat_date.replace(/\-/g,'');
		legend[lineIndex] = name;
		self.option.legend.data[lineIndex] = name;
		function update(data) {
			var opt = {
				name: self.option.legend.data[lineIndex],
				type: 'line',
	            smooth: true,
	            symbol:'none',
				data: data.data
			}
			if (data.data && data.data.length > 0) {
				self.option.series[lineIndex] = opt;
			}			
			self.myChart.setOption(self.option, true);
		}

		function flush(obj) {
			var now = new Date();

			if(formData.stat_date != now.format("yyyy-MM-dd"))
				return false;
			$.ajax({
				url: ajaxURL,
				type: 'POST',
				async: true,
				data: formData,
				dataType: 'json',
				success: function(data) {
					update(data);
				}
			});
		}

		$.ajax({
			url: ajaxURL,
			type: 'POST',
			async: true,
			data: formData,
			dataType: 'json',
			success: function(data) {
				update(data);
				self.myChart.hideLoading();
				clearInterval(timeTicket);
				var timeTicket = setInterval(function() {
					flush(self)
				}, 5 * 60 * 1000);
			},
			timeout: 20000,
			error: function() {
				self.myChart.hideLoading();
			}
		});
	}

	var title = {
		pv: '累计PV',
		uv: '累计UV',		
		period_pv: '分时段PV',
		period_uv: '分时段UV'
	}

// 对Date的扩展，将 Date 转化为指定格式的String 
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符， 
// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子： 
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 
// (new Date()).Format("yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18 
Date.prototype.format= function(fmt) 
{ //author: meizz 
  var o = { 
    "M+" : this.getMonth()+1,                 //月份 
    "d+" : this.getDate(),                    //日 
    "h+" : this.getHours(),                   //小时 
    "m+" : this.getMinutes(),                 //分 
    "s+" : this.getSeconds(),                 //秒 
    "q+" : Math.floor((this.getMonth()+3)/3), //季度 
    "S"  : this.getMilliseconds()             //毫秒 
  }; 
  if(/(y+)/.test(fmt)) 
    fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
  for(var k in o) 
    if(new RegExp("("+ k +")").test(fmt)) 
  fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); 
  return fmt; 
}

	var urlMap = {"ab_test": '/dashboard/realtime/netflow_ab_test/getDayData', "special": '/dashboard/realtime/netflow_special/getDayData', "url":'/dashboard/realtime/netflow_url/getDayData'};

	var ajaxURL ;
	function start(type) {
		// $('#pv').html(zrnumber.addCommas($('#pv').html()));
		// $('#vppv').html(zrnumber.addCommas($('#vppv').html()));
		// clearInterval(timeTicket);
		// var timeTicket = setInterval(function() {
		// 	flushCash()
		// }, 3 * 1000);
		// /**
		//  *
		//  */
		// function flushCash() {
		// 	$.ajax({
		// 		url: '/dashboard/realtime/netflow/getPvVppv',
		// 		type: 'POST',
		// 		async: true,
		// 		data: {
		// 			"bussline": bussline,
		// 			"platform": platform
		// 		},
		// 		dataType: 'json',
		// 		success: function(data) {
		// 			$('#pv').html(zrnumber.addCommas(data.pv));
		// 			$('#vppv').html(zrnumber.addCommas(data.vppv));
		// 		},
		// 		timeout: 5000
		// 	});
		// }
		ajaxURL=urlMap[type];
		var pv_hour = new RTChartDay('pv','pv');
		var uv_hour = new RTChartDay('uv','uv');
		var pv_min = new RTChartDay('period_pv','period_pv');
		var uv_min = new RTChartDay('period_uv','period_uv');
		charts=[pv_hour, uv_hour, pv_min, uv_min];
       
        $.each(charts,function(i,n){
            n.init();
        });
	}
	var charts;
	$('#addLine').click(function(){
		var stat_date = $('#stat_date').val();
  		var identity = $('#identity').val();
		var name = identity + '_' + stat_date.replace(/\-/g,'');
		if($.inArray(name, legend) >= 0){
			alert('已存在，不能重复添加!');
			return false;
		}

		$.each(charts,function(i,n){
            n.init(stat_date);
        });
	});	

	return {
		'start': start
	};
});